/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sk.ke.szatmary.peter.jclac.simpleCiphers.core;

import sk.ke.szatmary.peter.jclac.simpleCiphers.SimpleCipherAttr;
import java.util.List;

/**
 *
 * @author nue
 */
public interface SimpleCipher {
    
    /**
     * unicode end number code
     */
    final static int END_UNICODE = 65533;
    /**
     * oposite to END_UNICODE
     */
    final static int END_MINUS_UNICODE = -65533;
    /**
     * key must not be empty, must be not EMPTY_STR
     */
    final static String EMPTY_STR = "";
    
    /**
     * encrypt input string
     * @param plain
     * @return encrypted string
     */
    public String getEncrypted(String plain);
    
    /**
     * decrypt encrypted input string
     * @param encrypted string to decrypting
     * @return decrypted string
     */
    public String getDecrypted(String encrypted);
    
    /**
     * set whole list with cipher atributtes
     * @param list list of attributess
     * @throws SimpleCipherException 
     */
    public void setAttributes(List<SimpleCipherAttr> list) throws SimpleCipherException;
    
    /**
     * get cipher name
     * @return cipher name
     */
    public String getCipherName();
    /**
     * 
     * @return 
     */
    public List<SimpleCipherAttr> getAttributes();
}
